#include <stdio.h>
#define maxsize 100 //定义maxsize为100

typedef  struct{ 
    int  elem[maxsize]; 
    int  last;
}SeqList; 

void merge(SeqList *LA,SeqList *LB ,SeqList *LC);

int main(int argc, char* argv[])
{
	SeqList LA, LB, LC;
	int i;

	for(i = 0; i < 10;i++)
	{
		LA.elem[i] = 20-2*i;
	}
	LA.last = 9;

	for(i = 0; i < 8;i++)
	{
		LB.elem[i] = 24-3*i;
	}
	LB.last = 7;

	merge(&LA, &LB, &LC);
	
	for(i = 0; i <= LC.last ;i++)
	{
		printf("%d ", LC.elem[i]);
	}
	printf("\n");
	return 0;
}

//题目所求函数 传入三个顺序表的地址 LA,LB为输入表,LC为输出表
//功能: 将LA,LB按递减存入至LC中
void merge(SeqList *LA,SeqList *LB ,SeqList *LC){
    int i=0,j=0,k=0;//i,j,k为计数器
    LC->last=LA->last+LB->last;//LC元素总量为LA和LB的和
    
    //当A,B表当中还有元素,逐个遍历，谁大就将谁存入
    while(i<=LA->last&&j<=LB->last){
        if(LA->elem[i]>=LB->elem[j]){
            LC->elem[k]=LA->elem[i];
            k++;
            i++;
        }
        else{
            LC->elem[k]=LB->elem[j];
            k++;
            j++;

        }

        
    }

//若A剩下就将表A的全部存储在LC中
        while (i<=LA->last)
        {
            LC->elem[k]=LA->elem[i];
            k++;
            i++;

        }
        //若B剩下就将表B的全部存储在LC中
        while (j<=LB->last)
        {
            LC->elem[k]=LB->elem[j];
            k++;
            j++;
        }
        


}
/*
设计一个函数
	void merge(SeqList *LA, SeqList *LB, SeqList *LC) 
该函数的功能是将递减顺序表LA和LB和合并到递减顺序表LC中
其中SeqList结构如下：
typedef  struct{ 
    int  elem[maxsize]; 
    int  last;
}SeqList; 

如下的main函数执行后
int main(int argc, char* argv[])
{
	SeqList LA, LB, LC;
	int i;

	for(i = 0; i < 10;i++)
	{
		LA.elem[i] = 20-2*i;
	}
	LA.last = 9;

	for(i = 0; i < 8;i++)
	{
		LB.elem[i] = 24-3*i;
	}
	LB.last = 7;

	merge(&LA, &LB, &LC);
	
	for(i = 0; i <= LC.last ;i++)
	{
		printf("%d ", LC.elem[i]);
	}
	printf("\n");
	return 0;
}
执行的结果为
24 21 20 18 18 16 15 14 12 12 10 9 8 6 6 4 3 2

*/